import "./calc";
import "./unary";
import "./semicolon";
import { GaRegExp, ruleInject, ruleInjectable } from "../InjectionRule";

@ruleInjectable()
export default class executeDataRule extends GaRegExp {

	@ruleInject() private functionRule!: GaRegExp;

	@ruleInject() private classRule!: GaRegExp;

	@ruleInject() private interfaceRule!: GaRegExp;

	@ruleInject() private structRule!: GaRegExp;

	@ruleInject() private proceduralRule!: GaRegExp;

	@ruleInject() private semicolonDataRule!: GaRegExp;

	public RuleInit() {
		this.ParseRule([
			"(",
			this.semicolonDataRule, "|",
			this.functionRule, "|",
			this.classRule, "|",
			this.interfaceRule, "|",
			this.structRule, "|",
			this.proceduralRule,
			")"
		]);
	}

}
